package com.xhh.learning.record.unsafe;

import sun.misc.Unsafe;

import java.lang.reflect.Field;

/**
 * 类名： Demo
 * 描述：
 * 公司： 北京海鑫科金高科技股份有限公司
 * 作者： Administrator
 * 版本： V1.0
 * 创建时间:  2019/2/20 14:02
 * 最后修改时间:  2019/2/20 14:02
 */
public class Demo {

    private static final long SIZECTL;
    private static final sun.misc.Unsafe U;
    private transient volatile int sizeCtl = 50;

    public Demo(){

    }

    public Demo(int size) {
        System.out.println("3:"+SIZECTL);
        this.sizeCtl = size;
        System.out.println("4:"+SIZECTL);
    }

    public static void main(String[] args) {
        System.out.println("2:"+SIZECTL);
        Demo demo = new Demo(15);
        System.out.println("5:"+SIZECTL);

    }

    static{
        try{
            Class<?> clazz = Unsafe.class;
            Field f = clazz.getDeclaredField("theUnsafe");
            f.setAccessible(true);
            U = (Unsafe) f.get(clazz);

            Class<?> k = Demo.class;
            SIZECTL = U.objectFieldOffset
                    (k.getDeclaredField("sizeCtl"));
            System.out.println("1:"+SIZECTL);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public void test(){


    }


}
